home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / etc / RCS / ttyname.c,v < prev    next >
Text File  |  1988-08-25  |  3KB  |  122 lines

  1. head     1.2;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @ * @;
  6.  
  7.  
  8. 1.2
  9. date     88.08.25.17.21.00;  author ouster;  state Exp;
  10. branches ;
  11. next     1.1;
  12.  
  13. 1.1
  14. date     88.07.14.14.08.03;  author ouster;  state Exp;
  15. branches ;
  16. next     ;
  17.  
  18.  
  19. desc
  20. @@
  21.  
  22.  
  23. 1.2
  24. log
  25. @Use TTY environment variable to be at least a little clever.
  26. @
  27. text
  28. @/* 
  29.  * ttyname.c --
  30.  *
  31.  *    Source code for the ttyname library procedure.
  32.  *
  33.  * Copyright 1988 Regents of the University of California
  34.  * Permission to use, copy, modify, and distribute this
  35.  * software and its documentation for any purpose and without
  36.  * fee is hereby granted, provided that the above copyright
  37.  * notice appear in all copies.  The University of California
  38.  * makes no representations about the suitability of this
  39.  * software for any purpose.  It is provided "as is" without
  40.  * express or implied warranty.
  41.  */
  42.  
  43. #ifndef lint
  44. static char rcsid[] = "$Header: ttyname.c,v 1.1 88/07/14 14:08:03 ouster Exp $ SPRITE (Berkeley)";
  45. #endif not lint
  46.  
  47. #include <stdlib.h>
  48. #include <sys/types.h>
  49. #include <sys/stat.h>
  50.  
  51. /*
  52.  *----------------------------------------------------------------------
  53.  *
  54.  * ttyname --
  55.  *
  56.  *    This is a Sprite replacement for the UNIX ttyname library
  57.  *    procedure, which supposedly returns the name of the tty
  58.  *    associated with a given file descriptor.  Sprite doesn't
  59.  *    have a /dev with all ttys in it, so it's pretty hard to
  60.  *    emulate the right behavior.
  61.  *
  62.  * Results:
  63.  *    The return value is the name of the file corresponding
  64.  *    to filedes, if we could figure which one it was, or 0
  65.  *    otherwise.
  66.  *
  67.  * Side effects:
  68.  *    None.
  69.  *
  70.  *----------------------------------------------------------------------
  71.  */
  72.  
  73.     /* ARGSUSED */
  74. char *
  75. ttyname(filedes)
  76.     int filedes;        /* File for which to find tty name. */
  77. {
  78.     struct stat buf1, buf2;
  79.     char *tty;
  80.  
  81.     /*
  82.      * See if the file pointed to by the "TTY" environment variable
  83.      * happens to be the same as filedes.  If not, then return NULL.
  84.      */
  85.  
  86.     tty = getenv("TTY");
  87.     if ((tty == (char *) 0) || (stat(tty, &buf1) != 0)) {
  88.     return (char *) 0;
  89.     }
  90.     if (fstat(filedes, &buf2) != 0) {
  91.     return (char *) 0;
  92.     }
  93.     if ((buf1.st_dev == buf2.st_dev) && (buf1.st_ino == buf2.st_ino)
  94.         && (buf1.st_serverID == buf2.st_serverID)) {
  95.     return tty;
  96.     }
  97.     return (char *) 0;
  98. }
  99. @
  100.  
  101.  
  102. 1.1
  103. log
  104. @Initial revision
  105. @
  106. text
  107. @d17 1
  108. a17 1
  109. static char rcsid[] = "$Header: proto.c,v 1.2 88/03/11 08:39:08 ouster Exp $ SPRITE (Berkeley)";
  110. d20 4
  111. d32 2
  112. a33 2
  113.  *    have a /dev with all ttys in it, so for now this procedure
  114.  *    always returns 0.
  115. d36 3
  116. a38 1
  117.  *    0, as if there was no corresponding tty in /dev.
  118. d51 20
  119. a70 1
  120.     return (char *) 0;        /* Pretend we couldn't find it. */
  121. @
  122.